home *** CD-ROM | disk | FTP | other *** search
Wrap
card_3045.xml <?xml version="1.0" encoding="utf-8" ?> <!DOCTYPE card PUBLIC "-//Apple, Inc.//DTD card V 2.0//EN" "" > <card> <id>3045</id> <filler1>0</filler1> <bitmap>BMAP_4993.pbm</bitmap> <cantDelete> <false /> </cantDelete> <showPict> <true /> </showPict> <dontSearch> <false /> </dontSearch> <owner>2637</owner> <link rel="stylesheet" type="text/css" href="stylesheet_3136.css" /> <part> <id>1</id> <type>button</type> <visible> <true /> </visible> <reserved5> 0 </reserved5> <reserved4> 0 </reserved4> <reserved3> 0 </reserved3> <reserved2> 0 </reserved2> <reserved1> 0 </reserved1> <enabled> <true /> </enabled> <rect> <left>0</left> <top>0</top> <right>90</right> <bottom>58</bottom> </rect> <style>transparent</style> <showName> <true /> </showName> <highlight> <false /> </highlight> <autoHighlight> <false /> </autoHighlight> <sharedHighlight> <true /> </sharedHighlight> <family>0</family> <titleWidth>0</titleWidth> <icon>6544</icon> <textAlign>center</textAlign> <font>Chicago</font> <textSize>12</textSize> <textStyle>plain</textStyle> <name>Install HyperXBug</name> <script>on mouseUp answer "Locate HyperCard in the Following Dialog Box" put "screply" into theApp put "" into cd fld theApp do "get installpipe(" & theApp & ")" if cd fld theApp is "" then answer "HyperCard Not Found" exit mouseup end if if line 3 of cd fld theApp is not "HyperCard" then answer "There May Be A Problem, Try Again. HyperCard Must Be Named 'HyperCard'" exit mouseup end if answer "Locate Think C Debugger in the Following Dialog Box" put "thcreply" into theApp put "" into cd fld theApp do "get installpipe(" & theApp & ")" if cd fld theApp is "" then answer "THINK C Debugger not Found" exit mouseup end if if line 3 of cd fld theApp is not "Think C Debugger" then answer "There May Be A Problem, Try Again" exit mouseup end if answer "Installation Appears to Be Successful" end mouseUp</script> </part> <part> <id>2</id> <type>button</type> <visible> <true /> </visible> <reserved5> 0 </reserved5> <reserved4> 0 </reserved4> <reserved3> 0 </reserved3> <reserved2> 0 </reserved2> <reserved1> 0 </reserved1> <enabled> <true /> </enabled> <rect> <left>217</left> <top>70</top> <right>323</right> <bottom>120</bottom> </rect> <style>roundrect</style> <showName> <true /> </showName> <highlight> <false /> </highlight> <autoHighlight> <false /> </autoHighlight> <sharedHighlight> <true /> </sharedHighlight> <family>0</family> <titleWidth>0</titleWidth> <icon>26425</icon> <textAlign>center</textAlign> <font>Chicago</font> <textSize>12</textSize> <textStyle>plain</textStyle> <name>Call XCMD Source</name> <script>on mouseUp put "" into argList put the number of items in cd fld xcmdargs into numArgs repeat with argdex = 1 to numArgs put item argdex of cd fld xcmdargs after argList if argdex is not numargs then put "," after arglist end repeat --Get rid of any carriage returns repeat while return is in arglist delete char offset(return,arglist) of arglist end repeat put "get rescreatepbplus(" & argList & ")" into theCommand do theCommand put it into bg fld pipeaddr -- New way of launching cuz we're not concerned with clipboard get launchfromfield(line 1 of cd fld thcreply, ¬ line 2 of cd fld thcreply, line 3 of cd fld thcreply) set the visible of cd btn "call xcmd source" to false set the visible of cd btn "make xcmd callback" to false set the visible of cd btn "go back to c" to false set the visible of cd btn "get return value from xcmd" to false end mouseUp </script> </part> <part> <id>3</id> <type>button</type> <visible> <false /> </visible> <reserved5> 0 </reserved5> <reserved4> 0 </reserved4> <reserved3> 0 </reserved3> <reserved2> 0 </reserved2> <reserved1> 0 </reserved1> <enabled> <true /> </enabled> <rect> <left>163</left> <top>123</top> <right>277</right> <bottom>176</bottom> </rect> <style>roundrect</style> <showName> <true /> </showName> <highlight> <false /> </highlight> <autoHighlight> <true /> </autoHighlight> <sharedHighlight> <true /> </sharedHighlight> <family>0</family> <titleWidth>0</titleWidth> <icon>902</icon> <textAlign>center</textAlign> <font>Chicago</font> <textSize>12</textSize> <textStyle>plain</textStyle> <name>Make XCMD Callback</name> <script>on mouseUp get pbpluscb(bg fld pipeAddr) set the visible of cd btn "go back to c" to true put "Make your Callback again or go back to THINK C." into cd fld status end mouseUp </script> </part> <part> <id>4</id> <type>button</type> <visible> <false /> </visible> <reserved5> 0 </reserved5> <reserved4> 0 </reserved4> <reserved3> 0 </reserved3> <reserved2> 0 </reserved2> <reserved1> 0 </reserved1> <enabled> <true /> </enabled> <rect> <left>280</left> <top>123</top> <right>367</right> <bottom>176</bottom> </rect> <style>roundrect</style> <showName> <true /> </showName> <highlight> <false /> </highlight> <autoHighlight> <false /> </autoHighlight> <sharedHighlight> <true /> </sharedHighlight> <family>0</family> <titleWidth>0</titleWidth> <icon>26425</icon> <textAlign>center</textAlign> <font>Chicago</font> <textSize>12</textSize> <textStyle>plain</textStyle> <name>Go Back to C</name> <script>on mouseUp get launchfromfield(line 1 of cd fld thcreply, ¬ line 2 of cd fld thcreply, line 3 of cd fld thcreply) set the visible of me to false end mouseUp</script> </part> <part> <id>5</id> <type>button</type> <visible> <false /> </visible> <reserved5> 0 </reserved5> <reserved4> 0 </reserved4> <reserved3> 0 </reserved3> <reserved2> 0 </reserved2> <reserved1> 0 </reserved1> <enabled> <true /> </enabled> <rect> <left>197</left> <top>178</top> <right>352</right> <bottom>227</bottom> </rect> <style>roundrect</style> <showName> <true /> </showName> <highlight> <false /> </highlight> <autoHighlight> <false /> </autoHighlight> <sharedHighlight> <true /> </sharedHighlight> <family>0</family> <titleWidth>0</titleWidth> <icon>902</icon> <textAlign>center</textAlign> <font>Chicago</font> <textSize>12</textSize> <textStyle>plain</textStyle> <name>Get Return Value From XCMD</name> <script>on mouseUp get endpbplus(bg fld pipeAddr) put it into theRV answer "Return Value From XCMD is " & theRV put 0 into bg fld pipeAddr set the visible of cd btn "call xcmd source" to true set the visible of cd btn "make xcmd callback" to false set the visible of cd btn "go back to c" to false set the visible of cd btn "get return value from xcmd" to false end mouseUp </script> </part> <part> <id>7</id> <type>field</type> <visible> <false /> </visible> <dontWrap> <false /> </dontWrap> <dontSearch> <false /> </dontSearch> <sharedText> <false /> </sharedText> <fixedLineHeight> <false /> </fixedLineHeight> <autoTab> <false /> </autoTab> <lockText> <true /> </lockText> <rect> <left>280</left> <top>240</top> <right>428</right> <bottom>302</bottom> </rect> <style>rectangle</style> <autoSelect> <false /> </autoSelect> <showLines> <false /> </showLines> <wideMargins> <false /> </wideMargins> <multipleLines> <false /> </multipleLines> <reservedFamily> 0 </reservedFamily> <titleWidth>0</titleWidth> <icon>0</icon> <textAlign>left</textAlign> <font>Geneva</font> <textSize>12</textSize> <textStyle>plain</textStyle> <textHeight>16</textHeight> <name>SCReply</name> <script></script> </part> <part> <id>6</id> <type>field</type> <visible> <false /> </visible> <dontWrap> <false /> </dontWrap> <dontSearch> <false /> </dontSearch> <sharedText> <false /> </sharedText> <fixedLineHeight> <false /> </fixedLineHeight> <autoTab> <false /> </autoTab> <lockText> <true /> </lockText> <rect> <left>275</left> <top>170</top> <right>434</right> <bottom>238</bottom> </rect> <style>rectangle</style> <autoSelect> <false /> </autoSelect> <showLines> <false /> </showLines> <wideMargins> <false /> </wideMargins> <multipleLines> <false /> </multipleLines> <reservedFamily> 0 </reservedFamily> <titleWidth>0</titleWidth> <icon>0</icon> <textAlign>left</textAlign> <font>Geneva</font> <textSize>12</textSize> <textStyle>plain</textStyle> <textHeight>16</textHeight> <name>ThCReply</name> <script></script> </part> <part> <id>9</id> <type>field</type> <visible> <true /> </visible> <dontWrap> <false /> </dontWrap> <dontSearch> <false /> </dontSearch> <sharedText> <false /> </sharedText> <fixedLineHeight> <false /> </fixedLineHeight> <autoTab> <false /> </autoTab> <lockText> <false /> </lockText> <rect> <left>175</left> <top>20</top> <right>401</right> <bottom>65</bottom> </rect> <style>scrolling</style> <autoSelect> <false /> </autoSelect> <showLines> <false /> </showLines> <wideMargins> <false /> </wideMargins> <multipleLines> <false /> </multipleLines> <reservedFamily> 0 </reservedFamily> <titleWidth>0</titleWidth> <icon>0</icon> <textAlign>left</textAlign> <font>Geneva</font> <textSize>12</textSize> <textStyle>plain</textStyle> <textHeight>16</textHeight> <name>XCMDArgs</name> <script></script> </part> <part> <id>10</id> <type>field</type> <visible> <true /> </visible> <dontWrap> <false /> </dontWrap> <dontSearch> <false /> </dontSearch> <sharedText> <false /> </sharedText> <fixedLineHeight> <false /> </fixedLineHeight> <autoTab> <false /> </autoTab> <lockText> <false /> </lockText> <rect> <left>175</left> <top>0</top> <right>300</right> <bottom>21</bottom> </rect> <style>rectangle</style> <autoSelect> <false /> </autoSelect> <showLines> <false /> </showLines> <wideMargins> <false /> </wideMargins> <multipleLines> <false /> </multipleLines> <reservedFamily> 0 </reservedFamily> <titleWidth>0</titleWidth> <icon>0</icon> <textAlign>left</textAlign> <font>Geneva</font> <textSize>12</textSize> <textStyle>plain</textStyle> <textHeight>16</textHeight> <name></name> <script></script> </part> <part> <id>14</id> <type>button</type> <visible> <true /> </visible> <reserved5> 0 </reserved5> <reserved4> 0 </reserved4> <reserved3> 0 </reserved3> <reserved2> 0 </reserved2> <reserved1> 0 </reserved1> <enabled> <true /> </enabled> <rect> <left>0</left> <top>64</top> <right>104</right> <bottom>119</bottom> </rect> <style>transparent</style> <showName> <true /> </showName> <highlight> <false /> </highlight> <autoHighlight> <false /> </autoHighlight> <sharedHighlight> <true /> </sharedHighlight> <family>0</family> <titleWidth>0</titleWidth> <icon>2</icon> <textAlign>center</textAlign> <font>Chicago</font> <textSize>12</textSize> <textStyle>plain</textStyle> <name>Reset, If Crash Occurs</name> <script>on mouseUp put 0 into bg fld pipeaddr set the visible of cd btn "call xcmd source" to true set the visible of cd btn "make xcmd callback" to true set the visible of cd btn "go back to c" to true set the visible of cd btn "get return value from xcmd" to true end mouseUp </script> </part> <part> <id>18</id> <type>button</type> <visible> <true /> </visible> <reserved5> 0 </reserved5> <reserved4> 0 </reserved4> <reserved3> 0 </reserved3> <reserved2> 0 </reserved2> <reserved1> 0 </reserved1> <enabled> <true /> </enabled> <rect> <left>467</left> <top>0</top> <right>512</right> <bottom>50</bottom> </rect> <style>transparent</style> <showName> <true /> </showName> <highlight> <false /> </highlight> <autoHighlight> <false /> </autoHighlight> <sharedHighlight> <true /> </sharedHighlight> <family>0</family> <titleWidth>0</titleWidth> <icon>1020</icon> <textAlign>center</textAlign> <font>Chicago</font> <textSize>12</textSize> <textStyle>plain</textStyle> <name>Help</name> <script>on mouseUp go card "help card" end mouseUp</script> </part> <part> <id>20</id> <type>field</type> <visible> <true /> </visible> <dontWrap> <false /> </dontWrap> <dontSearch> <false /> </dontSearch> <sharedText> <false /> </sharedText> <fixedLineHeight> <false /> </fixedLineHeight> <autoTab> <false /> </autoTab> <lockText> <true /> </lockText> <rect> <left>324</left> <top>66</top> <right>512</right> <bottom>120</bottom> </rect> <style>scrolling</style> <autoSelect> <false /> </autoSelect> <showLines> <false /> </showLines> <wideMargins> <false /> </wideMargins> <multipleLines> <false /> </multipleLines> <reservedFamily> 0 </reservedFamily> <titleWidth>0</titleWidth> <icon>0</icon> <textAlign>left</textAlign> <font>Geneva</font> <textSize>9</textSize> <textStyle>plain</textStyle> <textHeight>12</textHeight> <name>Status</name> <script></script> </part> <part> <id>21</id> <type>field</type> <visible> <true /> </visible> <dontWrap> <false /> </dontWrap> <dontSearch> <false /> </dontSearch> <sharedText> <false /> </sharedText> <fixedLineHeight> <false /> </fixedLineHeight> <autoTab> <false /> </autoTab> <lockText> <false /> </lockText> <rect> <left>408</left> <top>50</top> <right>512</right> <bottom>67</bottom> </rect> <style>rectangle</style> <autoSelect> <false /> </autoSelect> <showLines> <false /> </showLines> <wideMargins> <false /> </wideMargins> <multipleLines> <false /> </multipleLines> <reservedFamily> 0 </reservedFamily> <titleWidth>0</titleWidth> <icon>0</icon> <textAlign>left</textAlign> <font>Geneva</font> <textSize>12</textSize> <textStyle>plain</textStyle> <textHeight>16</textHeight> <name></name> <script></script> </part> <part> <id>24</id> <type>field</type> <visible> <true /> </visible> <dontWrap> <false /> </dontWrap> <dontSearch> <false /> </dontSearch> <sharedText> <false /> </sharedText> <fixedLineHeight> <false /> </fixedLineHeight> <autoTab> <false /> </autoTab> <lockText> <false /> </lockText> <rect> <left>367</left> <top>248</top> <right>512</right> <bottom>268</bottom> </rect> <style>rectangle</style> <autoSelect> <false /> </autoSelect> <showLines> <false /> </showLines> <wideMargins> <false /> </wideMargins> <multipleLines> <false /> </multipleLines> <reservedFamily> 0 </reservedFamily> <titleWidth>0</titleWidth> <icon>0</icon> <textAlign>left</textAlign> <font>Geneva</font> <textSize>12</textSize> <textStyle>plain</textStyle> <textHeight>16</textHeight> <name>Ralph</name> <script></script> </part> <part> <id>25</id> <type>field</type> <visible> <true /> </visible> <dontWrap> <false /> </dontWrap> <dontSearch> <false /> </dontSearch> <sharedText> <false /> </sharedText> <fixedLineHeight> <false /> </fixedLineHeight> <autoTab> <false /> </autoTab> <lockText> <true /> </lockText> <rect> <left>367</left> <top>234</top> <right>473</right> <bottom>249</bottom> </rect> <style>rectangle</style> <autoSelect> <false /> </autoSelect> <showLines> <false /> </showLines> <wideMargins> <false /> </wideMargins> <multipleLines> <false /> </multipleLines> <reservedFamily> 0 </reservedFamily> <titleWidth>0</titleWidth> <icon>0</icon> <textAlign>left</textAlign> <font>Geneva</font> <textSize>12</textSize> <textStyle>plain</textStyle> <textHeight>16</textHeight> <name>testeroni</name> <script></script> </part> <content> <layer>card</layer> <id>10</id> <text>XCMD Arguments:</text> </content> <content> <layer>card</layer> <id>9</id> <text>666, Zing, Yowza </text> </content> <content> <layer>background</layer> <id>1</id> <text>0</text> </content> <content> <layer>card</layer> <id>7</id> <text>1800 Umm HyperCard</text> </content> <content> <layer>card</layer> <id>6</id> <text>61 Umm THINK C Debugger</text> </content> <content> <layer>card</layer> <id>21</id> <text>Status Window:</text> </content> <content> <layer>card</layer> <id>20</id> <text>You can hit the 'Call XCMD Source' button safely if you have your XCMD project running in THINK C.</text> </content> <content> <layer>card</layer> <id>25</id> <text>Ralph: Test Fld</text> </content> <name>main</name> <script>on idle if not (the suspended) then if (bg fld pipeaddr is not "") and (bg fld pipeaddr is not 0) then get checkPBPlus(bg fld pipeaddr, nil) put it into PBPlusChecker if PBPlusChecker is "cb" then -- Set the buttons up for CallBacks set the visible of cd btn "call xcmd source" to false set the visible of cd btn "make xcmd callback" to true put "Make your Callback." into cd fld status get checkPBPlus(bg fld pipeaddr, Check) end if if PBPlusChecker is "rv" then -- Set the buttons up for return value set the visible of cd btn "get return value from xcmd" to true set the visible of cd btn "make xcmd callback" to false set the visible of cd btn "go back to c" to false put "Your XCMD has ended. Hit 'Get Return Value from XCMD'." into cd fld status end if if PBPlusChecker is "nada" then -- Screw up send mouseup to cd btn "Reset, If Crash Occurs" beep answer "You Need to Start Your THINK C Project Running First" end if end if -- End of there actually being something in PBPlus -- Now if there is nothing in PBPlus if (bg fld pipeaddr is "") or (bg fld pipeaddr is 0) then set the visible of cd btn "call xcmd source" to true put "You can hit the 'Call XCMD Source' button safely if you have your XCMD project running in THINK C." into cd fld status set the visible of cd btn "make xcmd callback" to false set the visible of cd btn "go back to c" to false set the visible of cd btn "get return value from xcmd" to false end if end if pass idle end idle </script> </card> card_2205.xml <?xml version="1.0" encoding="utf-8" ?> <!DOCTYPE card PUBLIC "-//Apple, Inc.//DTD card V 2.0//EN" "" > <card> <id>2205</id> <filler1>0</filler1> <cantDelete> <false /> </cantDelete> <showPict> <true /> </showPict> <dontSearch> <false /> </dontSearch> <owner>2637</owner> <link rel="stylesheet" type="text/css" href="stylesheet_3136.css" /> <part> <id>1</id> <type>field</type> <visible> <true /> </visible> <dontWrap> <false /> </dontWrap> <dontSearch> <false /> </dontSearch> <sharedText> <false /> </sharedText> <fixedLineHeight> <false /> </fixedLineHeight> <autoTab> <false /> </autoTab> <lockText> <false /> </lockText> <rect> <left>0</left> <top>0</top> <right>421</right> <bottom>328</bottom> </rect> <style>scrolling</style> <autoSelect> <false /> </autoSelect> <showLines> <false /> </showLines> <wideMargins> <false /> </wideMargins> <multipleLines> <false /> </multipleLines> <reservedFamily> 0 </reservedFamily> <titleWidth>0</titleWidth> <icon>0</icon> <textAlign>left</textAlign> <font>Geneva</font> <textSize>12</textSize> <textStyle>plain</textStyle> <textHeight>16</textHeight> <name></name> <script></script> </part> <part> <id>2</id> <type>button</type> <visible> <true /> </visible> <reserved5> 0 </reserved5> <reserved4> 0 </reserved4> <reserved3> 0 </reserved3> <reserved2> 0 </reserved2> <reserved1> 0 </reserved1> <enabled> <true /> </enabled> <rect> <left>422</left> <top>0</top> <right>512</right> <bottom>27</bottom> </rect> <style>roundrect</style> <showName> <true /> </showName> <highlight> <false /> </highlight> <autoHighlight> <false /> </autoHighlight> <sharedHighlight> <true /> </sharedHighlight> <family>0</family> <titleWidth>0</titleWidth> <icon>0</icon> <textAlign>center</textAlign> <font>Chicago</font> <textSize>12</textSize> <textStyle>plain</textStyle> <name>HyperXBug</name> <script>on mouseUp go card main end mouseUp</script> </part> <content> <layer>card</layer> <id>1</id> <text>Welcome to the HyperXBug Demo. This program represents a giant leap forward in computer science. Well, it makes debugging your XCMDs a lot easier anyway. This demo version of HyperXBug only supports two Callbacks and those are a bit crippled, but it does show how HyperXBug allows one to debug XCMDs at the source level. To order the full version of HyperXBug for HyperCard or SuperCard (Please specify which) send a check for $150 to: RanTech 4840 Clairemont Mesa Bl. #14 San Deigo, CA 92117 or E-Mail a visa number to: CompuServe: 73027,3370 America Online or AppleLink: HyperXBug. System Requirements: at least 4 meg of RAM and System 6.0.3 or higher including System 7. HyperCard 2.0 and THINK C 4.0. There are a few basic things to know about HyperXBug. The first thing you must do is Install HyperXBug. Click on the Install button in the upper left of the first screen. This will prompt you to locate HyperCard and the Think C Debugger. Remember to Choose the "THINK C Debugger", not Think C. First, 'Make' the Bugging.proj and DoneBugging.proj in the libs folder. Next, open HyperXBugDemo.proj in Think C. Make sure the project type is "Application" when debugging. HyperXBugDemo is a working XFCN that will show how to step through your C source using HyperXBug. Make sure when debugging that the #define Xdebugging statement is 1. You will set it to 0 when you are done debugging and want to compile. This is important. Once HyperXBugDemo.proj is up in Think C, hit command-R (this will start the Think C Debugger as usual). You are now ready to start debugging your XCMD. Now, go back to HyperCard through the Finder. Any arguments that your XCMD needs must be typed into the 'XCMD Argument' field. The name of your XCMD is irrelevant at this point; you will be debugging whatever XCMD is in THINK C. Hit the "Call XCMD Source" button. This will send you over to the C debugger where you are ready to step through your code. You can simply hit Go if you want. However, you will probably want to set a breakpoint after the boilerplate SetUpHyperXBug() code. The SetUpHyperXBug() code must be in every HyperXBug project as it sets up the necessary HyperXBug data structures . There is no need to SetUpA4 or any of the usual code resource setups, HyperXBug does it for you. Now if you hit Go, you'll end up back in HyperCard because you encountered a Callback. HyperCard will require you to make the Callback before you can go back to C. Make the Callback (i.e. hit the Make Callback button). After making the Callback you have the option of making the same Callback again or going back to C. Go back to C and you can step through more of your code. When the XCMD is done HyperXBug will give you the return value and then will release its contact with THINK C. That's it! You now have the ability to step through your C source code setting breakpoints along the way. Any Callbacks will put you back in HyperCard. To compile your XCMD you must do a few simple things. Remove the Bugging.proj from the project window and replace it with the DoneBugging.proj from the HyperXBug libs folder. Now change the project type from "Application" to "Code Resource" and fill in the appropriate blanks as outlined in the Think C manual, pg 85ish. You MUST CHECK the 'MultiSegment' box. Next, set the #define Xdebugging to 0. Recompile the project as an XCMD and it's ready to install in whatever project you want. If it worked in the debugger it will work in real life. There are a few caveats: 1) If you are using ROM calls from managers that are usually inited by HyperCard, you must init these yourself during debugging and then REMOVE them when you compile to an xcmd. eg. InitWindows(). 2) You must check multi-seg in the project type window even if it's only one segment because HyperXBug uses objects. 3) You will notice that the usual calling convention of Callbacks is slightly different. This is because CXBug(What HyperXBug is based on), is an object class and Callbacks are messages to thePipe, an object of class CXBug. You do not pass the paramPtr in your callbacks because the paramPtr is an instance variable of thePipe. Look at the examples of Callbacks in the test project and you will see that it's a simple difference. You can look at the instance variables in CXBug.h to see how to access some of them. You will sometimes want to access the paramPtr directly to get at things like the ReturnValue. 4) HyperXBug currently supports only the 1.2.5 callbacks, although HyperXBug works in HyperCard 2.1. I am currently working on HyperCard 2.1 XWindow callbacks. It supports all SuperCard Callbacks. Any Problems? Please feel free to give me a call or E-Mail me at 619-292-5834 H/W, Compuserve: 73027,3370. America Online: HyperXBug. AppleLink: HyperXBug. I hope you will find this program useful. I expect you will. Thanks, Dave Holden. </text> </content> <name>Help Card</name> <script></script> </card>